package ve.usb.crm.hibernate;

import ve.usb.cohesion.runtime.LocalDate;import java.util.HashSet;
import java.util.Set;

public class Personal implements java.io.Serializable, ve.usb.cohesion.runtime.Auditable {

    /** Creates a new instance of Personal */
    public Personal() {}
    
    /**
     * Holds value of property id.
     */
    private Long id;

    /**
     * Getter for property id.
     * @return Value of property id.
     */
    public Long getId() {
        return this.id;
    }

    /**
     * Holds value of property idPersonal.
     */
    private long idPersonal;

    /**
     * Getter for property idPersonal.
     * @return Value of property idPersonal.
     */
    public long getIdPersonal() {
        return this.idPersonal;
    }

    /**
     * Setter for property idPersonal.
     * @param idPersonal New value of property idPersonal.
     */
    public void setIdPersonal(long idPersonal) {
        this.id = this.idPersonal = idPersonal;
    }

    /**
     * Holds value of property nombre.
     */
    private String nombre = "";

    /**
     * Getter for property nombre.
     * @return Value of property nombre.
     */
    public String getNombre() {
        return this.nombre;
    }

    /**
     * Setter for property nombre.
     * @param nombre New value of property nombre.
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * Holds value of property apellido.
     */
    private String apellido = "";

    /**
     * Getter for property apellido.
     * @return Value of property apellido.
     */
    public String getApellido() {
        return this.apellido;
    }

    /**
     * Setter for property apellido.
     * @param apellido New value of property apellido.
     */
    public void setApellido(String apellido) {
        this.apellido = apellido;
    }

    /**
     * Holds value of property direccion.
     */
    private String direccion = "";

    /**
     * Getter for property direccion.
     * @return Value of property direccion.
     */
    public String getDireccion() {
        return this.direccion;
    }

    /**
     * Setter for property direccion.
     * @param direccion New value of property direccion.
     */
    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    /**
     * Holds value of property correoE.
     */
    private String correoE = "";

    /**
     * Getter for property correoE.
     * @return Value of property correoE.
     */
    public String getCorreoE() {
        return this.correoE;
    }

    /**
     * Setter for property correoE.
     * @param correoE New value of property correoE.
     */
    public void setCorreoE(String correoE) {
        this.correoE = correoE;
    }

    /**
     * Holds value of property telefonoHabitacion.
     */
    private String telefonoHabitacion = "";

    /**
     * Getter for property telefonoHabitacion.
     * @return Value of property telefonoHabitacion.
     */
    public String getTelefonoHabitacion() {
        return this.telefonoHabitacion;
    }

    /**
     * Setter for property telefonoHabitacion.
     * @param telefonoHabitacion New value of property telefonoHabitacion.
     */
    public void setTelefonoHabitacion(String telefonoHabitacion) {
        this.telefonoHabitacion = telefonoHabitacion;
    }

    /**
     * Holds value of property telefonoMovil.
     */
    private String telefonoMovil = "";

    /**
     * Getter for property telefonoMovil.
     * @return Value of property telefonoMovil.
     */
    public String getTelefonoMovil() {
        return this.telefonoMovil;
    }

    /**
     * Setter for property telefonoMovil.
     * @param telefonoMovil New value of property telefonoMovil.
     */
    public void setTelefonoMovil(String telefonoMovil) {
        this.telefonoMovil = telefonoMovil;
    }

    /**
     * Holds value of property telefonoExt.
     */
    private String telefonoExt = "";

    /**
     * Getter for property telefonoExt.
     * @return Value of property telefonoExt.
     */
    public String getTelefonoExt() {
        return this.telefonoExt;
    }

    /**
     * Setter for property telefonoExt.
     * @param telefonoExt New value of property telefonoExt.
     */
    public void setTelefonoExt(String telefonoExt) {
        this.telefonoExt = telefonoExt;
    }

    /**
     * Holds value of property fechaNacimiento.
     */
    private java.util.Date fechaNacimiento;

    /**
     * Getter for property fechaNacimiento.
     * @return Value of property fechaNacimiento.
     */
    public java.util.Date getFechaNacimiento() {
        return this.fechaNacimiento;
    }

    /**
     * Setter for property fechaNacimiento.
     * @param fechaNacimiento New value of property fechaNacimiento.
     */
    public void setFechaNacimiento(java.util.Date fechaNacimiento) {
        if (fechaNacimiento==null || fechaNacimiento instanceof LocalDate)
            this.fechaNacimiento = fechaNacimiento;
        else this.fechaNacimiento = new LocalDate(fechaNacimiento);
    }

    /**
     * Holds value of property lugarNacimiento.
     */
    private String lugarNacimiento = "";

    /**
     * Getter for property lugarNacimiento.
     * @return Value of property lugarNacimiento.
     */
    public String getLugarNacimiento() {
        return this.lugarNacimiento;
    }

    /**
     * Setter for property lugarNacimiento.
     * @param lugarNacimiento New value of property lugarNacimiento.
     */
    public void setLugarNacimiento(String lugarNacimiento) {
        this.lugarNacimiento = lugarNacimiento;
    }

    /**
     * Holds value of property departamento.
     */
    private String departamento = "";

    /**
     * Getter for property departamento.
     * @return Value of property departamento.
     */
    public String getDepartamento() {
        return this.departamento;
    }

    /**
     * Setter for property departamento.
     * @param departamento New value of property departamento.
     */
    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    /**
     * Holds value of property sueldo.
     */
    private int sueldo;

    /**
     * Getter for property sueldo.
     * @return Value of property sueldo.
     */
    public int getSueldo() {
        return this.sueldo;
    }

    /**
     * Setter for property sueldo.
     * @param sueldo New value of property sueldo.
     */
    public void setSueldo(int sueldo) {
        this.sueldo = sueldo;
    }

    /**
     * Holds value of property tareas.
     */
    private Set<TareasPorPersona> tareas = new HashSet<TareasPorPersona>();

    /**
     * Getter for property tareas.
     * @return Value of property tareas.
     */
    public Set<TareasPorPersona> getTareas() {
        return this.tareas;
    }

    /**
     * Setter for property tareas.
     * @param tareas New value of property tareas.
     */
    public void setTareas(Set<TareasPorPersona> tareas) {
        this.tareas = tareas;
    }

    /**
     * Add an element to set property tareas
     * and sets elements's property persona.
     * @param element New element to be added to tareas.
     */
    public void addToTareas(TareasPorPersona element) {
        element.setPersona(this);
        tareas.add(element);
    }

    /**
     * Removes and old element from set tareas
     * and sets element's property persona to null.
     * @param old The element to be removed from tareas
     */
    public void removeFromTareas(TareasPorPersona old) {
        tareas.remove(old);
        old.setPersona(null);
    }
    /**
     * Holds value of property oportunidadesCreadas.
     */
    private Set<Oportunidad> oportunidadesCreadas = new HashSet<Oportunidad>();

    /**
     * Getter for property oportunidadesCreadas.
     * @return Value of property oportunidadesCreadas.
     */
    public Set<Oportunidad> getOportunidadesCreadas() {
        return this.oportunidadesCreadas;
    }

    /**
     * Setter for property oportunidadesCreadas.
     * @param oportunidadesCreadas New value of property oportunidadesCreadas.
     */
    public void setOportunidadesCreadas(Set<Oportunidad> oportunidadesCreadas) {
        this.oportunidadesCreadas = oportunidadesCreadas;
    }

    /**
     * Add an element to set property oportunidadesCreadas
     * and sets elements's property respOportunidad.
     * @param element New element to be added to oportunidadesCreadas.
     */
    public void addToOportunidadesCreadas(Oportunidad element) {
        element.setRespOportunidad(this);
        oportunidadesCreadas.add(element);
    }

    /**
     * Removes and old element from set oportunidadesCreadas
     * and sets element's property respOportunidad to null.
     * @param old The element to be removed from oportunidadesCreadas
     */
    public void removeFromOportunidadesCreadas(Oportunidad old) {
        oportunidadesCreadas.remove(old);
        old.setRespOportunidad(null);
    }
    /**
     * Holds value of property oportunidadesParticipa.
     */
    private Set<PersonalOportunidad> oportunidadesParticipa = new HashSet<PersonalOportunidad>();

    /**
     * Getter for property oportunidadesParticipa.
     * @return Value of property oportunidadesParticipa.
     */
    public Set<PersonalOportunidad> getOportunidadesParticipa() {
        return this.oportunidadesParticipa;
    }

    /**
     * Setter for property oportunidadesParticipa.
     * @param oportunidadesParticipa New value of property oportunidadesParticipa.
     */
    public void setOportunidadesParticipa(Set<PersonalOportunidad> oportunidadesParticipa) {
        this.oportunidadesParticipa = oportunidadesParticipa;
    }

    /**
     * Add an element to set property oportunidadesParticipa
     * and sets elements's property personal.
     * @param element New element to be added to oportunidadesParticipa.
     */
    public void addToOportunidadesParticipa(PersonalOportunidad element) {
        element.setPersonal(this);
        oportunidadesParticipa.add(element);
    }

    /**
     * Removes and old element from set oportunidadesParticipa
     * and sets element's property personal to null.
     * @param old The element to be removed from oportunidadesParticipa
     */
    public void removeFromOportunidadesParticipa(PersonalOportunidad old) {
        oportunidadesParticipa.remove(old);
        old.setPersonal(null);
    }
    /**
     * Holds value of property personalUsuario.
     */
    private Usuario personalUsuario;

    /**
     * Getter for property personalUsuario.
     * @return Value of property personalUsuario.
     */
    public Usuario getPersonalUsuario() {
        return this.personalUsuario;
    }

    /**
     * Setter for property personalUsuario.
     * @param personalUsuario New value of property personalUsuario.
     */
    public void setPersonalUsuario(Usuario personalUsuario) {
        this.personalUsuario = personalUsuario;
    }

    /**
     * Holds value of property esActivo.
     */
    private boolean esActivo;

    /**
     * Getter for property esActivo.
     * @return Value of property esActivo.
     */
    public boolean getEsActivo() {
        return this.esActivo;
    }

    /**
     * Setter for property contactoUsuario.
     * @param esActivo New value of property esActivo.
     */
    public void setEsActivo(boolean esActivo) {
        this.esActivo = esActivo;
    }



    public String toString() {
        return "<Personal id='C" + this.id +
      //idPersonal
      "\" nombre =\"" + nombre +
      "\" apellido =\"" + apellido +
      "\" direccion =\"" + direccion +
      "\" correoE =\"" + correoE +
      "\" telefonoHabitacion =\"" + telefonoHabitacion +
      "\" telefonoMovil =\"" + telefonoMovil +
      "\" telefonoExt =\"" + telefonoExt +
      "\" fechaNacimiento =\"" + fechaNacimiento +
      "\" lugarNacimiento =\"" + lugarNacimiento +
      "\" departamento =\"" + departamento +
      "\" sueldo =\"" + sueldo +
      //tareas
      //oportunidadesCreadas
      //oportunidadesParticipa
        ((personalUsuario==null) ? "" : "\" personalUsuario =\"C" + personalUsuario.getId()) +


        "'/>";
    }

}